<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计算属性</title>
</head>
<body>
    
    <div id="app">

     <input type="text" v-model="firstName"/>
     <input type="text" v-model="lastName"/>
     <br/>
        <!--模板语法  -->
       watch侦听属性： {{ fullName }}
        <br/>
        computed 计算属性: {{ getfullName }}
       
    <br>
  <br>

   
    </div>

    


    <!-- 开发环境版本，包含了有帮助的命令行警告 -->
    <script src="https://lib.baomitu.com/vue/2.6.14/vue.js"></script>
    <!--引入外部的js文件-->
    <script src="http://upcdn.b0.upaiyun.com/libs/jquery/jquery-2.0.2.min.js"></script>
    

<script>
    //模板语法来声明式地将数据渲染进 DOM 的系统
     
    //所有vue 页面都要先创建一个Vue对象;
    var app = new Vue({
        // key : value
        // el : 绑定页面dom元素，如果是id为app的元素这里就是 '#app'
        el: '#app',
        //data {}  json格式
        data: {
            // 变量名: 值
            firstName: 'Foo',
            lastName: 'Bar',
            fullName: 'Foo Bar'
        },
        //计算属性
        computed: {
          //函数  getter
          //计算属性是基于它们的响应式依赖进行缓存的
          //只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 message 还没有发生改变，多次访问 reversedMessage 计算属性会立即返回之前的计算结果，而不必再次执行函数。
          // 购物车(计算总价)
          getfullName: function(){
            //因为getter 所以需要有返回值
            return  this.firstName+" "+this.lastName;
          }
        },
        watch: {
          //侦听的变量的值(改变) =>firstName =>val
          firstName: function(val){
            console.log(val);
            this.fullName = val+" "+this.lastName
          },
          //侦听的是lastName =>改变后的值  val
          lastName: function(val){
            console.log(val);
            this.fullName = this.firstName+" "+val
          }
        },
       

    });

   
   

</script>
</body>
</html>